@@ -0,0 +1,53 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('account', '0047_auto_20200601_0242'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='lensmanincomeexpensesinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='lensmaninfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='lensmanloginloginfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='tourguideinfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='userincomeexpensesinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ migrations.AlterField( |
|
39 |
+ model_name='userinfo', |
|
40 |
+ name='status', |
|
41 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
42 |
+ ), |
|
43 |
+ migrations.AlterField( |
|
44 |
+ model_name='userloginloginfo', |
|
45 |
+ name='status', |
|
46 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
47 |
+ ), |
|
48 |
+ migrations.AlterField( |
|
49 |
+ model_name='wechatinfo', |
|
50 |
+ name='status', |
|
51 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
52 |
+ ), |
|
53 |
+ ] |
@@ -8,12 +8,14 @@ from django_logit import logit |
||
8 | 8 |
from django_query import get_query_value |
9 | 9 |
from django_response import response |
10 | 10 |
from paginator import pagination |
11 |
+from pywe_miniapp import get_shareinfo |
|
12 |
+from pywe_storage import RedisStorage |
|
11 | 13 |
from TimeConvert import TimeConvert as tc |
12 | 14 |
|
13 | 15 |
from account.models import UserInfo |
14 | 16 |
from coupon.models import UserCouponInfo |
15 |
-from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityInfo, MemberActivitySigninInfo, |
|
16 |
- MemberActivitySignupInfo, RightInfo) |
|
17 |
+from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityGroupShareInfo, MemberActivityInfo, |
|
18 |
+ MemberActivitySigninInfo, MemberActivitySignupInfo, RightInfo) |
|
17 | 19 |
from utils.error.errno_utils import (MemberActivityStatusCode, MemberCouponStatusCode, MemberGoodStatusCode, |
18 | 20 |
MemberRightStatusCode, UserStatusCode) |
19 | 21 |
from utils.redis.connect import r |
@@ -21,6 +23,9 @@ from utils.redis.rkeys import MEMBER_SEND_COUPON_LIST, MEMBER_UPGRADE_INFO |
||
21 | 23 |
from utils.redis.rshot import get_member_shot_data |
22 | 24 |
|
23 | 25 |
|
26 |
+WECHAT = settings.WECHAT |
|
27 |
+ |
|
28 |
+ |
|
24 | 29 |
@logit |
25 | 30 |
def member(request): |
26 | 31 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
@@ -44,7 +49,7 @@ def member(request): |
||
44 | 49 |
|
45 | 50 |
upgrade_info, _ = r.getdel(MEMBER_UPGRADE_INFO % (brand_id, user_id)) |
46 | 51 |
|
47 |
- return response(200, data={ |
|
52 |
+ return response(data={ |
|
48 | 53 |
'nickname': user.final_nickname, |
49 | 54 |
'avatar': user.avatar, |
50 | 55 |
'integral': user.integral, |
@@ -74,7 +79,7 @@ def rights(request): |
||
74 | 79 |
rights = RightInfo.objects.filter(status=True).order_by('position') |
75 | 80 |
rights = [right.data for right in rights] |
76 | 81 |
|
77 |
- return response(200, data={ |
|
82 |
+ return response(data={ |
|
78 | 83 |
'nickname': user.final_nickname, |
79 | 84 |
'avatar': user.avatar, |
80 | 85 |
'integral': user.integral, |
@@ -97,7 +102,7 @@ def right_detail(request): |
||
97 | 102 |
except RightInfo.DoesNotExist: |
98 | 103 |
return response(MemberRightStatusCode.RIGHT_NOT_FOUND) |
99 | 104 |
|
100 |
- return response(200, data={ |
|
105 |
+ return response(data={ |
|
101 | 106 |
'right': right.data, |
102 | 107 |
}) |
103 | 108 |
|
@@ -121,7 +126,7 @@ def goods(request): |
||
121 | 126 |
else: |
122 | 127 |
goods.append(good.data(user_id)) |
123 | 128 |
|
124 |
- return response(200, data={ |
|
129 |
+ return response(data={ |
|
125 | 130 |
'nickname': user.final_nickname, |
126 | 131 |
'avatar': user.avatar, |
127 | 132 |
'integral': user.integral, |
@@ -151,7 +156,7 @@ def good_detail(request): |
||
151 | 156 |
except GoodsInfo.DoesNotExist: |
152 | 157 |
return response(MemberGoodStatusCode.GOOD_NOT_FOUND) |
153 | 158 |
|
154 |
- return response(200, data={ |
|
159 |
+ return response(data={ |
|
155 | 160 |
'nickname': user.final_nickname, |
156 | 161 |
'avatar': user.avatar, |
157 | 162 |
'integral': user.integral, |
@@ -233,7 +238,7 @@ def good_exchange(request): |
||
233 | 238 |
|
234 | 239 |
goods.append(good.data(user_id)) |
235 | 240 |
|
236 |
- return response(200, data={ |
|
241 |
+ return response(data={ |
|
237 | 242 |
'nickname': user.final_nickname, |
238 | 243 |
'avatar': user.avatar, |
239 | 244 |
'integral': user.integral, |
@@ -256,7 +261,7 @@ def coupons(request): |
||
256 | 261 |
coupons, left = pagination(coupons, page, num) |
257 | 262 |
coupons = [coupon.data for coupon in coupons if not coupon.has_used] |
258 | 263 |
|
259 |
- return response(200, data={ |
|
264 |
+ return response(data={ |
|
260 | 265 |
'coupons': coupons, |
261 | 266 |
'left': left, |
262 | 267 |
}) |
@@ -272,7 +277,7 @@ def user_coupon_detail(request): |
||
272 | 277 |
except UserCouponInfo.DoesNotExist: |
273 | 278 |
return response(MemberCouponStatusCode.USER_COUPON_NOT_FOUND) |
274 | 279 |
|
275 |
- return response(200, data=coupon.data) |
|
280 |
+ return response(data=coupon.data) |
|
276 | 281 |
|
277 | 282 |
|
278 | 283 |
@logit |
@@ -301,14 +306,14 @@ def user_coupon_use(request): |
||
301 | 306 |
coupon.used_at = tc.utc_datetime() |
302 | 307 |
coupon.save() |
303 | 308 |
|
304 |
- return response(200, data=coupon.data) |
|
309 |
+ return response(data=coupon.data) |
|
305 | 310 |
|
306 | 311 |
|
307 | 312 |
@logit |
308 | 313 |
def integrals(request): |
309 | 314 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
310 | 315 |
|
311 |
- return response(200, data={ |
|
316 |
+ return response(data={ |
|
312 | 317 |
'shots_types': get_member_shot_data(), |
313 | 318 |
'enable_photo_upvote_integral': True, |
314 | 319 |
'mp_url': 'https://mp.weixin.qq.com/s/2K6PAnf3KrxtrP40-DBuww', |
@@ -339,7 +344,7 @@ def activity_list(request): |
||
339 | 344 |
else: |
340 | 345 |
activitys.append(act.data(user_id)) |
341 | 346 |
|
342 |
- return response(200, data={ |
|
347 |
+ return response(data={ |
|
343 | 348 |
'banners': banners, |
344 | 349 |
'activitys': activitys, |
345 | 350 |
}) |
@@ -356,7 +361,7 @@ def activity_detail(request): |
||
356 | 361 |
except MemberActivityInfo.DoesNotExist: |
357 | 362 |
return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
358 | 363 |
|
359 |
- return response(200, data={ |
|
364 |
+ return response(data={ |
|
360 | 365 |
'activity': act.details(user_id), |
361 | 366 |
}) |
362 | 367 |
|
@@ -383,7 +388,7 @@ def activity_signup(request): |
||
383 | 388 |
# TODO: 立即推送模版消息(报名成功,时间,地点) |
384 | 389 |
# TODO: 延迟(活动当天)推送模版消息(时间,地点) |
385 | 390 |
|
386 |
- return response(200, data={ |
|
391 |
+ return response(data={ |
|
387 | 392 |
'activity': act.data(user_id), |
388 | 393 |
}) |
389 | 394 |
|
@@ -415,6 +420,63 @@ def activity_signin(request): |
||
415 | 420 |
|
416 | 421 |
# TODO: 立即推送模版消息(感谢您参加活动,获得的积分) |
417 | 422 |
|
418 |
- return response(200, data={ |
|
423 |
+ return response(data={ |
|
419 | 424 |
'activity': act.data(user_id), |
420 | 425 |
}) |
426 |
+ |
|
427 |
+ |
|
428 |
+def get_group_share_info_integral(share_user_id, open_gid, group_share_integral): |
|
429 |
+ # 校验该分享人是否已领取该群积分 |
|
430 |
+ has_integral = MemberActivityGroupShareInfo.objects.filter(share_user_id=share_user_id, open_gid=open_gid, is_integral=True).exists() |
|
431 |
+ if has_integral: |
|
432 |
+ return False, 0 |
|
433 |
+ # TODO: 其他限制条件 |
|
434 |
+ return True, group_share_integral |
|
435 |
+ |
|
436 |
+ |
|
437 |
+@logit |
|
438 |
+def activity_group_share(request): |
|
439 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
440 |
+ share_user_id = request.POST.get('share_user_id', '') |
|
441 |
+ click_user_id = request.POST.get('click_user_id', '') |
|
442 |
+ activity_id = request.POST.get('activity_id') |
|
443 |
+ |
|
444 |
+ wxcfg = WECHAT.get('MINIAPP', {}) |
|
445 |
+ |
|
446 |
+ appid = wxcfg.get('appID') |
|
447 |
+ secret = wxcfg.get('appsecret') |
|
448 |
+ |
|
449 |
+ iv = request.POST.get('iv', '') |
|
450 |
+ encryptedData = request.POST.get('encryptedData', '') |
|
451 |
+ |
|
452 |
+ # { |
|
453 |
+ # "openGId": "OPENGID" |
|
454 |
+ # } |
|
455 |
+ shareinfo = get_shareinfo(appid=appid, secret=secret, unid=click_user_id, session_key=None, encryptedData=encryptedData, iv=iv, storage=RedisStorage(r)) |
|
456 |
+ |
|
457 |
+ open_gid = shareinfo.get('openGId') |
|
458 |
+ |
|
459 |
+ if not open_gid: |
|
460 |
+ return response() |
|
461 |
+ |
|
462 |
+ try: |
|
463 |
+ act = MemberActivityInfo.objects.select_for_update().get(activity_id=activity_id, status=True) |
|
464 |
+ except MemberActivityInfo.DoesNotExist: |
|
465 |
+ return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
|
466 |
+ |
|
467 |
+ # 判断是否给积分 & 给多少积分 |
|
468 |
+ is_integral, integral = get_group_share_info_integral(share_user_id, open_gid, act.group_share_integral) |
|
469 |
+ |
|
470 |
+ MemberActivityGroupShareInfo.objects.create(**{ |
|
471 |
+ 'brand_id': act.brand_id, |
|
472 |
+ 'brand_name': act.brand_name, |
|
473 |
+ 'share_user_id': share_user_id, |
|
474 |
+ 'click_user_id': click_user_id, |
|
475 |
+ 'open_gid': open_gid, |
|
476 |
+ 'activity_id': activity_id, |
|
477 |
+ 'title': act.title, |
|
478 |
+ 'is_integral': is_integral, |
|
479 |
+ 'integral': integral, |
|
480 |
+ }) |
|
481 |
+ |
|
482 |
+ return response(data={}) |
@@ -363,6 +363,8 @@ urlpatterns += [ |
||
363 | 363 |
url(r'^member/activity/signup$', member_views.activity_signup, name='member_activity_signup'), |
364 | 364 |
url(r'^member/activity/signin$', member_views.activity_signin, name='member_activity_signin'), |
365 | 365 |
|
366 |
+ url(r'^member/activity/group_share$', member_views.activity_group_share, name='member_activity_group_share'), |
|
367 |
+ |
|
366 | 368 |
url(r'^rights$', member_views.rights, name='rights'), |
367 | 369 |
url(r'^right/detail$', member_views.right_detail, name='right_detail'), |
368 | 370 |
url(r'^goods$', member_views.goods, name='goods'), |
@@ -0,0 +1,28 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('coupon', '0015_auto_20200727_1720'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='couponinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='usercouponinfo', |
|
20 |
+ name='coupon_from', |
|
21 |
+ field=models.CharField(blank=True, db_index=True, default='MEMBER_BENEFITS', help_text='劵来源', max_length=32, null=True, verbose_name='coupon_from'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='usercouponinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ ] |
@@ -0,0 +1,43 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('group', '0045_auto_20180930_1159'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='groupinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='groupphotoinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='groupphotoorderinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='groupuserinfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='photocommentinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ migrations.AlterField( |
|
39 |
+ model_name='photothumbupinfo', |
|
40 |
+ name='status', |
|
41 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
42 |
+ ), |
|
43 |
+ ] |
@@ -0,0 +1,18 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('guideline', '0003_auto_20190826_1537'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='screenadmininfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ ] |
@@ -0,0 +1,23 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('integral', '0019_saleclerksubmitloginfo_is_upload_qiniu'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='saleclerkintegralincomeexpensesinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='saleclerksubmitloginfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ ] |
@@ -0,0 +1,33 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('logs', '0011_auto_20200309_1735'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='mchinfodecryptloginfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='mchinfoencryptloginfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='mchloginfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='mchsearchmodelandcameraloginfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ ] |
@@ -0,0 +1,18 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('marketcode', '0003_auto_20200114_0220'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='marketcodeinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ ] |
@@ -0,0 +1,98 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('mch', '0057_auto_20200602_1403'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='activityinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='administratorinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='brandinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='brandmodeldistributorpriceinfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='cameramodelinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ migrations.AlterField( |
|
39 |
+ model_name='consumeinfosubmitloginfo', |
|
40 |
+ name='status', |
|
41 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
42 |
+ ), |
|
43 |
+ migrations.AlterField( |
|
44 |
+ model_name='distributorinfo', |
|
45 |
+ name='status', |
|
46 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
47 |
+ ), |
|
48 |
+ migrations.AlterField( |
|
49 |
+ model_name='latestappinfo', |
|
50 |
+ name='status', |
|
51 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
52 |
+ ), |
|
53 |
+ migrations.AlterField( |
|
54 |
+ model_name='latestappscreeninfo', |
|
55 |
+ name='status', |
|
56 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
57 |
+ ), |
|
58 |
+ migrations.AlterField( |
|
59 |
+ model_name='maintenancemaninfo', |
|
60 |
+ name='sex', |
|
61 |
+ field=models.IntegerField(choices=[(0, '未知'), (1, '男'), (2, '女')], default=0, help_text='Sex', verbose_name='sex'), |
|
62 |
+ ), |
|
63 |
+ migrations.AlterField( |
|
64 |
+ model_name='maintenancemaninfo', |
|
65 |
+ name='status', |
|
66 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
67 |
+ ), |
|
68 |
+ migrations.AlterField( |
|
69 |
+ model_name='modelcamerabodyinfo', |
|
70 |
+ name='status', |
|
71 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
72 |
+ ), |
|
73 |
+ migrations.AlterField( |
|
74 |
+ model_name='modelimageinfo', |
|
75 |
+ name='status', |
|
76 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
77 |
+ ), |
|
78 |
+ migrations.AlterField( |
|
79 |
+ model_name='modelinfo', |
|
80 |
+ name='status', |
|
81 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
82 |
+ ), |
|
83 |
+ migrations.AlterField( |
|
84 |
+ model_name='operatorinfo', |
|
85 |
+ name='status', |
|
86 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
87 |
+ ), |
|
88 |
+ migrations.AlterField( |
|
89 |
+ model_name='saleclerkinfo', |
|
90 |
+ name='sex', |
|
91 |
+ field=models.IntegerField(choices=[(0, '未知'), (1, '男'), (2, '女')], default=0, help_text='Sex', verbose_name='sex'), |
|
92 |
+ ), |
|
93 |
+ migrations.AlterField( |
|
94 |
+ model_name='saleclerkinfo', |
|
95 |
+ name='status', |
|
96 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
97 |
+ ), |
|
98 |
+ ] |
@@ -0,0 +1,77 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+import shortuuidfield.fields |
|
5 |
+ |
|
6 |
+ |
|
7 |
+class Migration(migrations.Migration): |
|
8 |
+ |
|
9 |
+ dependencies = [ |
|
10 |
+ ('member', '0018_memberactivityinfo_is_signup'), |
|
11 |
+ ] |
|
12 |
+ |
|
13 |
+ operations = [ |
|
14 |
+ migrations.CreateModel( |
|
15 |
+ name='MemberActivityGroupShareInfo', |
|
16 |
+ fields=[ |
|
17 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
18 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')), |
|
19 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
20 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
21 |
+ ('brand_id', models.CharField(blank=True, db_index=True, help_text='品牌唯一标识', max_length=32, null=True, verbose_name='brand_id')), |
|
22 |
+ ('brand_name', models.CharField(blank=True, help_text='品牌名称', max_length=255, null=True, verbose_name='brand_name')), |
|
23 |
+ ('group_share_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='活动群组分享唯一标识', max_length=22, null=True, unique=True)), |
|
24 |
+ ('share_user_id', models.CharField(blank=True, db_index=True, help_text='分享用户唯一标识', max_length=32, null=True, verbose_name='share_user_id')), |
|
25 |
+ ('click_user_id', models.CharField(blank=True, db_index=True, help_text='点击用户唯一标识', max_length=32, null=True, verbose_name='click_user_id')), |
|
26 |
+ ('open_gid', models.CharField(blank=True, db_index=True, help_text='群组唯一标识', max_length=32, null=True, verbose_name='open_gid')), |
|
27 |
+ ('activity_id', models.CharField(blank=True, db_index=True, help_text='活动唯一标识', max_length=32, null=True, verbose_name='activity_id')), |
|
28 |
+ ('title', models.CharField(blank=True, help_text='活动名称', max_length=255, null=True, verbose_name='title')), |
|
29 |
+ ('is_integral', models.BooleanField(default=False, help_text='是否有积分', verbose_name='is_integral')), |
|
30 |
+ ('integral', models.IntegerField(default=0, help_text='积分', verbose_name='integral')), |
|
31 |
+ ], |
|
32 |
+ options={ |
|
33 |
+ 'verbose_name': '会员活动群组分享信息', |
|
34 |
+ 'verbose_name_plural': '会员活动群组分享信息', |
|
35 |
+ }, |
|
36 |
+ ), |
|
37 |
+ migrations.AddField( |
|
38 |
+ model_name='memberactivityinfo', |
|
39 |
+ name='group_share_integral', |
|
40 |
+ field=models.IntegerField(default=0, help_text='群组分享会员积分', verbose_name='group_share_integral'), |
|
41 |
+ ), |
|
42 |
+ migrations.AlterField( |
|
43 |
+ model_name='goodsinfo', |
|
44 |
+ name='status', |
|
45 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
46 |
+ ), |
|
47 |
+ migrations.AlterField( |
|
48 |
+ model_name='goodsorderinfo', |
|
49 |
+ name='status', |
|
50 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
51 |
+ ), |
|
52 |
+ migrations.AlterField( |
|
53 |
+ model_name='memberactivityinfo', |
|
54 |
+ name='status', |
|
55 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
56 |
+ ), |
|
57 |
+ migrations.AlterField( |
|
58 |
+ model_name='memberactivitysignininfo', |
|
59 |
+ name='status', |
|
60 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
61 |
+ ), |
|
62 |
+ migrations.AlterField( |
|
63 |
+ model_name='memberactivitysignupinfo', |
|
64 |
+ name='status', |
|
65 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
66 |
+ ), |
|
67 |
+ migrations.AlterField( |
|
68 |
+ model_name='rightinfo', |
|
69 |
+ name='status', |
|
70 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
71 |
+ ), |
|
72 |
+ migrations.AlterField( |
|
73 |
+ model_name='shottypeinfo', |
|
74 |
+ name='status', |
|
75 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
76 |
+ ), |
|
77 |
+ ] |
@@ -297,6 +297,7 @@ class MemberActivityInfo(BaseModelMixin): |
||
297 | 297 |
lon = models.FloatField(_(u'lon'), default=1.0, help_text=u'经度') |
298 | 298 |
|
299 | 299 |
integral = models.IntegerField(_(u'integral'), default=0, help_text=u'会员积分') |
300 |
+ group_share_integral = models.IntegerField(_(u'group_share_integral'), default=0, help_text=u'群组分享会员积分') |
|
300 | 301 |
|
301 | 302 |
image = models.ImageField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'活动内容图片') |
302 | 303 |
|
@@ -453,3 +454,29 @@ class MemberActivitySigninInfo(BaseModelMixin): |
||
453 | 454 |
|
454 | 455 |
def __unicode__(self): |
455 | 456 |
return unicode(self.pk) |
457 |
+ |
|
458 |
+ |
|
459 |
+class MemberActivityGroupShareInfo(BaseModelMixin): |
|
460 |
+ brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
461 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
462 |
+ |
|
463 |
+ group_share_id = ShortUUIDField(_(u'group_share_id'), max_length=32, blank=True, null=True, help_text=u'活动群组分享唯一标识', db_index=True, unique=True) |
|
464 |
+ |
|
465 |
+ share_user_id = models.CharField(_(u'share_user_id'), max_length=32, blank=True, null=True, help_text=u'分享用户唯一标识', db_index=True) |
|
466 |
+ click_user_id = models.CharField(_(u'click_user_id'), max_length=32, blank=True, null=True, help_text=u'点击用户唯一标识', db_index=True) |
|
467 |
+ |
|
468 |
+ open_gid = models.CharField(_(u'open_gid'), max_length=32, blank=True, null=True, help_text=u'群组唯一标识', db_index=True) |
|
469 |
+ |
|
470 |
+ activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True) |
|
471 |
+ |
|
472 |
+ title = models.CharField(_(u'title'), max_length=255, blank=True, null=True, help_text=u'活动名称') |
|
473 |
+ |
|
474 |
+ is_integral = models.BooleanField(_(u'is_integral'), default=False, help_text=u'是否有积分') |
|
475 |
+ integral = models.IntegerField(_(u'integral'), default=0, help_text=u'积分') |
|
476 |
+ |
|
477 |
+ class Meta: |
|
478 |
+ verbose_name = _(u'会员活动群组分享信息') |
|
479 |
+ verbose_name_plural = _(u'会员活动群组分享信息') |
|
480 |
+ |
|
481 |
+ def __unicode__(self): |
|
482 |
+ return unicode(self.pk) |
@@ -0,0 +1,38 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('message', '0013_auto_20180103_0446'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='systemmessagedeleteinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='systemmessageinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='systemmessagereadinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='usermessageinfo', |
|
30 |
+ name='msg_type', |
|
31 |
+ field=models.CharField(db_index=True, default='system', help_text='消息类型', max_length=8, verbose_name='msg_type'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='usermessageinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ ] |
@@ -0,0 +1,48 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('operation', '0018_auto_20180114_2314'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='appsettingsinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='boxprogramversioninfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='feedbackinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='guestentrancecontrolinfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='latestappinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ migrations.AlterField( |
|
39 |
+ model_name='patchinfo', |
|
40 |
+ name='status', |
|
41 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
42 |
+ ), |
|
43 |
+ migrations.AlterField( |
|
44 |
+ model_name='splashinfo', |
|
45 |
+ name='status', |
|
46 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
47 |
+ ), |
|
48 |
+ ] |
@@ -0,0 +1,18 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('pay', '0011_auto_20180103_0446'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='orderinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ ] |
@@ -0,0 +1,28 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('photo', '0013_auto_20180103_0446'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='photosinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='photouuidinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='uuidinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ ] |
@@ -11,7 +11,7 @@ django-json-render==1.0.3 |
||
11 | 11 |
django-json-response==1.1.5 |
12 | 12 |
django-logit==1.1.3 |
13 | 13 |
django-mobi2==1.0.2 |
14 |
-django-models-ext==1.1.9 |
|
14 |
+django-models-ext==1.1.10 |
|
15 | 15 |
django-multidomain==1.1.4 |
16 | 16 |
django-paginator2==1.1.3 |
17 | 17 |
django-query==1.0.6 |
@@ -7,7 +7,7 @@ pywe-marketcode==1.0.3 |
||
7 | 7 |
pywe-membercard==1.0.1 |
8 | 8 |
pywe-custom-message==1.0.1 |
9 | 9 |
pywe-event-message==1.0.1 |
10 |
-pywe-miniapp==1.1.5 |
|
10 |
+pywe-miniapp==1.1.6 |
|
11 | 11 |
pywe-oauth==1.1.1 |
12 | 12 |
pywe-pay==1.0.13 |
13 | 13 |
pywe-pay-notify==1.0.5 |
@@ -0,0 +1,28 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('sales', '0007_supersalesresponsibilityinfomodelssalestatisticinfo_sr_avatar'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='salesresponsibilityinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='salesresponsibilityinfomodelssalestatisticinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='supersalesresponsibilityinfomodelssalestatisticinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ ] |
@@ -0,0 +1,18 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('staff', '0001_initial'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='staffdeleteclerksalesubmitloginfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ ] |
@@ -0,0 +1,68 @@ |
||
1 |
+# Generated by Django 2.2.15 on 2020-11-29 17:31 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('statistic', '0015_modelsalestatisticinfo_saleclerks'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='consumedistributorsalestatisticinfo', |
|
15 |
+ name='status', |
|
16 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
17 |
+ ), |
|
18 |
+ migrations.AlterField( |
|
19 |
+ model_name='consumemodelsalestatisticinfo', |
|
20 |
+ name='status', |
|
21 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
22 |
+ ), |
|
23 |
+ migrations.AlterField( |
|
24 |
+ model_name='consumeprovincesalestatisticinfo', |
|
25 |
+ name='status', |
|
26 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
27 |
+ ), |
|
28 |
+ migrations.AlterField( |
|
29 |
+ model_name='consumesalestatisticinfo', |
|
30 |
+ name='status', |
|
31 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
32 |
+ ), |
|
33 |
+ migrations.AlterField( |
|
34 |
+ model_name='consumeuserstatisticinfo', |
|
35 |
+ name='status', |
|
36 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
37 |
+ ), |
|
38 |
+ migrations.AlterField( |
|
39 |
+ model_name='distributorsalestatisticinfo', |
|
40 |
+ name='status', |
|
41 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
42 |
+ ), |
|
43 |
+ migrations.AlterField( |
|
44 |
+ model_name='modelsalestatisticinfo', |
|
45 |
+ name='status', |
|
46 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
47 |
+ ), |
|
48 |
+ migrations.AlterField( |
|
49 |
+ model_name='provincesalestatisticinfo', |
|
50 |
+ name='status', |
|
51 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
52 |
+ ), |
|
53 |
+ migrations.AlterField( |
|
54 |
+ model_name='registerstatisticinfo', |
|
55 |
+ name='status', |
|
56 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
57 |
+ ), |
|
58 |
+ migrations.AlterField( |
|
59 |
+ model_name='saleclerksalestatisticinfo', |
|
60 |
+ name='status', |
|
61 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
62 |
+ ), |
|
63 |
+ migrations.AlterField( |
|
64 |
+ model_name='salestatisticinfo', |
|
65 |
+ name='status', |
|
66 |
+ field=models.BooleanField(default=True, help_text='Status', verbose_name='status'), |
|
67 |
+ ), |
|
68 |
+ ] |